package main

import "fmt"

/**
执行用时：4 ms, 在所有 Go 提交中击败了91.45%的用户
内存消耗：2.6 MB, 在所有 Go 提交中击败了83.84%的用户
 */
func lengthOfLongestSubstring(s string) int {

	var f [256]int
	res := 0
	for i, j := 0, 0; i < len(s); i++ {
		f[s[i]]++
		for f[s[i]] > 1 {
			f[s[j]]--
			j++
		}
		res = max(res, i - j + 1)
	}
	return res
}

func max(a int, b int) int {
	if a > b {
		return a
	} else {
		return b
	}
}

func main() {
	fmt.Println(lengthOfLongestSubstring("abcabcbb"))
}
